Conventional high-quality renderers sample geometrically complex environments, such as those containing foliage, fur, or intricate geometry at high rates to capture sub-pixel detail. These environments are challenging for any rendering system, but are particularly difficult for real-time systems, especially those based on deferred shading, a technique frequently employed by games.
First, despite the high performance of modern graphics processing units (GPUs), evaluating a shading function at high sampling rates remains too costly, in terms of processing, for real-time applications. Second, because a deferred shading system delays all shading computations until after geometric occlusions have been resolved, the shading inputs are buffered for all samples. At high sampling rates, the storage and memory bandwidth costs of generating and accessing the buffered shading inputs become prohibitive. For example, a 1920×1080 geometry buffer (G-buffer) holding 16 samples per pixel encoded using a typical 20-bytes-per-sample layout requires over 600 MB of storage.
To reduce the processing and storage costs, game engines typically provision storage for, and limit shader evaluation to, only a few samples per pixel (e.g. four). Post-process anti-aliasing techniques may be used to increase image quality using neighboring pixels or temporally re-projected sample information from previous frames. However, the post-process anti-aliasing techniques generally introduce blur and fail to capture the appearance of sub-pixel details. Thus, there is a need for addressing these issues and/or other issues associated with the prior art.